/** @format */

import { createRouter, createWebHistory } from 'vue-router'

import { useUserStore } from '@/stores/user'

const router = createRouter({
	// import.meta.env.BASE_URL： 指明路由启动后的基础路径，默认值是 /
	history: createWebHistory(import.meta.env.BASE_URL),
	// 路由规则表
	routes: [
		{
			// 布局页

			// 根路径
			path: '/',
			// 路由懒加载：当页面被访问的时候，才去加载对应的文件，从而提高首屏的加载速度
			component: () => import('@/views/Layout/index.vue'),
			// 重定向：防止访问根路径，页面空白
			redirect: '/dashboard',
			// 路由嵌套
			children: [
				{
					// 数据看板
					path: 'dashboard',
					component: () => import('@/views/Dashboard/index.vue')
				},
				{
					// 文章管理
					path: 'article',
					component: () => import('@/views/Article/index.vue')
				}
			]
		},
		{
			// 登录
			path: '/login',
			component: () => import('@/views/Login/index.vue')
		}
	]
})

// 白名单：无需登录就可以访问的路由路径
const whiteList = ['/login']

// 全局前置守卫
router.beforeEach((to, from) => {
	const userStore = useUserStore()
	// 从 pinia 中获取 token
	const { token } = userStore
	if (token) {
		// 登录了
		// 还想去登录
		if (to.path === '/login') {
			// 直接重定向到首页
			return '/'
		} else {
			// 放行
			return true
		}
	} else {
		// 未登录
		if (whiteList.includes(to.path)) {
			// 放行
			return true
		} else {
			// 重定向到登录，并且携带回跳地址
			return `/login?redirectUrl=${to.path}`
		}
	}
})

export default router
